<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>Peripherals Level</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>


</head>
<body>
<div id="top"><!-- do not remove this div! -->

<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 46px;">
  <td id="proglogo"><img alt="CMSIS Logo" src="CMSIS_Logo_Final.png"></td>
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">CMSIS-SVD
   &#160;<span id="projectnumber">Version 1.10</span>
   </div>
   <div id="projectbrief">CMSIS System View Description</div>
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<div id="CMSISnav" class="tabs1">
    <ul class="tablist">
      <li><a href="../../General/html/index.html"><span>CMSIS</span></a></li>
      <li><a href="../../Core/html/index.html"><span>CORE</span></a></li>
      <li><a href="../../DSP/html/index.html"><span>DSP</span></a></li>
      <li><a href="../../RTOS/html/index.html"><span>RTOS API</span></a></li>
      <li class="current"><a href="../../SVD/html/index.html"><span>SVD</span></a></li>
    </ul>
</div>
<!-- Generated by Doxygen 1.7.5.1 -->
<script type="text/javascript" src="dynsections.js"></script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
      <li><a href="modules.html"><span>Reference</span></a></li>
    </ul>
  </div>
</div>
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
  initNavTree('group__svd__xml__peripherals__gr.html','');
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">Peripherals Level</div>  </div>
<div class="ingroups"><a class="el" href="group__svd___format__gr.html">SVD File Schema Levels</a></div></div>
<div class="contents">
<p>All peripherals of a device are enclosed within the tag <b>&lt;peripherals&gt;</b>. At least one peripheral has to be defined. Each peripheral is enclosed in the tag <b>&lt;peripheral&gt;</b>.</p>
<ul>
<li>Each peripheral describes all registers belonging to that peripheral.</li>
<li>The address range allocated by a peripheral is defined through one or more address blocks.</li>
<li>An address block and register addresses are specified relative to the base address of a peripheral. The address block information can be used for constructing a memory map for the device peripherals.</li>
</ul>
<dl class="remark"><dt><b>Remarks:</b></dt><dd>The memory map does not contain any information about RAM, ROM, or FLASH memory.</dd></dl>
<hr/>
<pre>
<span class="mand"> <b>&lt;peripherals&gt;</b> </span></pre><pre><span class="mand">    <b>&lt;peripheral</b> <span class="opt">derivedFrom</span>="&lt;em&gt;identifierType&lt;/em&gt;"&gt;</span></pre><pre><span class="mand">        &lt;name&gt;<em>identifierType</em>&lt;/name&gt;
        &lt;version&gt;<em>xs:string</em>&lt;/version&gt;
        &lt;description&gt;<em>xs:string</em>&lt;/description&gt;
    <span class="opt">
        &lt;groupName&gt;<em>identifierType</em>&lt;/groupName&gt;
        &lt;prependToName&gt;<em>identifierType</em>&lt;/prependToName&gt;
        &lt;appendToName&gt;<em>identifierType</em>&lt;/appendToName&gt;
        &lt;disableCondition&gt;<em>xs:string</em>&lt;/disableCondition&gt;
    </span>
        &lt;baseAddress&gt;<em>scaledNonNegativeInteger</em>&lt;/baseAddress&gt;
    <span class="opt">
        <em> &lt;!-- registerPropertiesGroup --&gt;</em>
        &lt;size&gt;<em>scaledNonNegativeInteger</em>&lt;/size&gt;
        &lt;access&gt;<em>accessType</em>&lt;/access&gt;
        &lt;resetValue&gt;<em>scaledNonNegativeInteger</em>&lt;/resetValue&gt;
        &lt;resetMask&gt;<em>scaledNonNegativeInteger</em>&lt;/resetMask&gt;
        <em> &lt;!-- end of registerPropertiesGroup --&gt;</em>
    </span>
        &lt;addressBlock&gt;
            &lt;offset&gt;<em>scaledNonNegativeInteger</em>&lt;/offset&gt;
            &lt;size&gt;<em>scaledNonNegativeInteger</em>&lt;/size&gt;
            &lt;usage&gt;<em>usageType</em>&lt;/usage&gt;
        &lt;/addressBlock&gt;<span class="opt">
        ...
        &lt;addressBlock&gt;<span class="mand">
            &lt;offset&gt;<em>scaledNonNegativeInteger</em>&lt;/offset&gt;
            &lt;size&gt;<em>scaledNonNegativeInteger</em>&lt;/size&gt;
            &lt;usage&gt;<em>usageType</em>&lt;/usage&gt;</span><span class="opt">
        &lt;/addressBlock&gt;</span>
    <span class="opt">
        &lt;interrupt&gt;</span><span class="mand">
            &lt;name&gt;<em>identifierType</em>&lt;/name&gt;
            &lt;value&gt;<em>scaledNonNegativeInteger</em>&lt;/value&gt;</span>
        &lt;/interrupt&gt;</span></span></pre><pre><span class="mand"><span class="opt">        &lt;registers&gt;
            ...
        &lt;/registers&gt;</span></span></pre><pre><span class="mand">    <b>&lt;/peripheral&gt;</b>
    <span class="opt">...
    &lt;peripheral&gt;
       ...
    &lt;/peripheral&gt;
    </span>
<b>&lt;/peripherals&gt;</b>
</span>
</pre><table  class="cmtable" summary="Peripheral Level Schema">
<tr>
<th nowrap="nowrap">Attribute Name </th><th>Description </th><th>Type </th><th>Occurrence  </th></tr>
<tr>
<td>derivedFrom </td><td>Specifies the name of a peripheral from which this peripheral will be derived. Values are inherit. Elements specified underneath will override inherited values.  </td><td>xs:Name  </td><td>0..1  </td></tr>
<tr>
<th nowrap="nowrap">Element Name </th><th>Description </th><th>Type </th><th>Occurrence  </th></tr>
<tr>
<td>name  </td><td>The name string is used to identify the peripheral. Peripheral names are required to be unique for a device. The name needs to be an ANSI C identifier to allow header file generation.  </td><td>xs:Name  </td><td>1..1   </td></tr>
<tr>
<td>version  </td><td>The string specifies the version of this peripheral description.  </td><td>xs:string  </td><td>0..1   </td></tr>
<tr>
<td>description  </td><td>The string provides an overview of the purpose and functionality of the peripheral. </td><td>xs:string  </td><td>0..1   </td></tr>
<tr>
<td>groupName  </td><td></td><td>xs:string  </td><td>0..1   </td></tr>
<tr>
<td>prependToName  </td><td>All register names of this peripheral have their names prefixed with this string. </td><td>xs:string  </td><td>0..1   </td></tr>
<tr>
<td>appendToName  </td><td>All register names of this peripheral have their names suffixed with this string. </td><td>xs:string  </td><td>0..1   </td></tr>
<tr>
<td>disableCondition  </td><td>Is a C-language compliant logical expression returning a TRUE or FALSE result. If TRUE, refreshing the display for this peripheral is disabled and related accesses by the debugger are suppressed. <br/>
 <br/>
 Only constants and references to other registers contained in the description are allowed: <em>&lt;peripheral&gt;-&gt;&lt;register&gt;-&gt;&lt;field&gt;</em>, for example, (System-&gt;ClockControl-&gt;apbEnable == 0). The following operators are allowed in the expression [&amp;&amp;,||, ==, !=, &gt;&gt;, &lt;&lt;, &amp;, |]. <dl class="attention"><dt><b>Attention:</b></dt><dd>Use this feature only in cases where accesses from the debugger to registers of un-clocked peripherals result in severe debugging failures. SVD is intended to provide static information and does not include any run-time computation or functions. Such capabilities can be added by the tools, and is beyond the scope of this description language. </dd></dl>
</td><td>xs:string  </td><td>0..1   </td></tr>
<tr>
<td>baseAddress  </td><td>Lowest address reserved or used by the peripheral. </td><td>scaledNonNegativeInteger  </td><td>1..1   </td></tr>
<tr class="group1">
<td colspan="4">See <a class="el" href="group__register_properties_group__gr.html">registerPropertiesGroup</a> for details.  </td></tr>
<tr class="group1">
<td align="right">size </td><td>Defines the default bit-width of any register contained in the device (implicit inheritance).  </td><td>scaledNonNegativeInteger </td><td>0..1  </td></tr>
<tr class="group1">
<td align="right">access </td><td>Defines the default access rights for all registers. </td><td>accessType </td><td>0..1  </td></tr>
<tr class="group1">
<td align="right">resetValue  </td><td>Defines the default value for all registers at RESET. </td><td>scaledNonNegativeInteger  </td><td>0..1   </td></tr>
<tr class="group1">
<td align="right">resetMask </td><td>Identifies which register bits have a defined reset value. </td><td>scaledNonNegativeInteger </td><td>0..1  </td></tr>
<tr class="group2">
<td>addressBlock </td><td>Specifies an address range uniquely mapped to this peripheral. A peripheral must have at least one address block, but may allocate multiple distinct address ranges. If a peripheral is derived form another peripheral, the addressBlock is not mandatory.  </td><td>addressBlockType </td><td>1..*  </td></tr>
<tr class="group2">
<td align="right">offset </td><td>Specifies the start address of an address block relative to the peripheral <em>baseAddress</em>.  </td><td>scaledNonNegativeInteger  </td><td>1..1  </td></tr>
<tr class="group2">
<td align="right">size </td><td>Specifies the number of addressUnitBits being covered by this address block. The end address of an address block results from the sum of baseAddress, offset, and (size - 1).  </td><td>scaledNonNegativeInteger  </td><td>1..1  </td></tr>
<tr class="group2">
<td align="right">usage </td><td>The following predefined values can be used: <span class="XML-Token">registers<em>, </em> buffer<em>, or</em> reserved</span>.  </td><td>scaledNonNegativeInteger  </td><td>1..1  </td></tr>
<tr class="group1">
<td>interrupt  </td><td>A peripheral can have multiple associated interrupts. This entry allows the debugger to show interrupt names instead of interrupt numbers. </td><td>interruptType  </td><td>0..*   </td></tr>
<tr class="group1">
<td align="right">name  </td><td>The string represents the interrupt name. </td><td>XS:string  </td><td>1..1   </td></tr>
<tr class="group1">
<td align="right">value  </td><td>Is the enumeration index value associated to the interrupt. </td><td>xs:integer  </td><td>1..1   </td></tr>
<tr>
<td>registers  </td><td>See <a class="el" href="group__svd__xml__registers__gr.html">Registers Level</a> for details.  </td><td>&#160; </td><td>0..1   </td></tr>
</table>
<h2><a class="anchor" id="periph_ex"></a>
Example:</h2>
<div class="fragment"><pre class="fragment">...
&lt;peripheral&gt;
  &lt;name&gt;Timer0&lt;/name&gt;
  &lt;version&gt;1.0.32&lt;/version&gt;
  &lt;description&gt;Timer 0 is a simple 16 bit timer counting down ... &lt;/description&gt;
  &lt;baseAddress&gt;0x40000000&lt;/baseAddress&gt;
  &lt;addressBlock&gt;
    &lt;offset&gt;0x0&lt;/offset&gt;
    &lt;size&gt;0x400&lt;/size&gt;
    &lt;usage&gt;registers&lt;/usage&gt;
  &lt;/addressBlock&gt;
  &lt;interrupt&gt;&lt;name&gt;TIM0_INT&lt;/name&gt;&lt;value&gt;34&lt;/value&gt;&lt;/interrupt&gt;
  &lt;registers&gt;
    ...
  &lt;/registers&gt;
&lt;/peripheral&gt;

&lt;peripheral derivedFrom=<span class="stringliteral">&quot;Timer0&quot;</span>&gt;
  &lt;name&gt;Timer1&lt;/name&gt;
  &lt;baseAddress&gt;0x40000400&lt;/baseAddress&gt;
&lt;/peripheral&gt;
...
</pre></div> </div>
</div>
  <div id="nav-path" class="navpath">
    <ul>

    <li class="footer">Generated on Wed Mar 28 2012 15:38:11 for CMSIS-SVD by ARM Ltd. All rights reserved.
    <!--
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.5.1 </li>
    -->
    </li>
   </ul>
 </div>


</body>
</html>
